package schuchert.contest;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.File;

import org.junit.Before;
import org.junit.Test;

public class ConTestInstrumentationMainBasedClassFileTransformerPropertiesTest {
    private static final String FOOBARBAZ = "foobarbaz";

    @Before
    public void recordSystemProperties() {
        Properties original = (Properties)System.getProperties().clone();
    }

    @Test
    public void canSetDeleteFilesTrue() {
        System
                .setProperty(
                        ConTestInstrumentationMainBasedClassFileTransformer.CON_TEST_INSTRUMENTATION_DELETE_FILES,
                        "true");
        ConTestInstrumentationMainBasedClassFileTransformer transformer = new ConTestInstrumentationMainBasedClassFileTransformer();
        assertTrue(transformer.deleteFilesAfterTransformation);
    }

    @Test
    public void canSetDeleteFilesFalse() {
        System
                .setProperty(
                        ConTestInstrumentationMainBasedClassFileTransformer.CON_TEST_INSTRUMENTATION_DELETE_FILES,
                        "false");
        ConTestInstrumentationMainBasedClassFileTransformer transformer = new ConTestInstrumentationMainBasedClassFileTransformer();
        assertFalse(transformer.deleteFilesAfterTransformation);
    }

    @Test
    public void canSetTempDirectoryProperty() {
        System
                .setProperty(
                        ConTestInstrumentationMainBasedClassFileTransformer.CON_TEST_INSTRUMENTATION_TEMP_DIR,
                        FOOBARBAZ);
        ConTestInstrumentationMainBasedClassFileTransformer transformer = new ConTestInstrumentationMainBasedClassFileTransformer();
        assertEquals(new File(FOOBARBAZ), transformer.tempDirectory);
    }

    @Test
    public void canSetClassFilterProperty() {
        System
                .setProperty(
                        ConTestInstrumentationMainBasedClassFileTransformer.CON_TEST_INSTRUMENTATION_CLASS_FILTER,
                        FOOBARBAZ);
        ConTestInstrumentationMainBasedClassFileTransformer transformer = new ConTestInstrumentationMainBasedClassFileTransformer();
        assertEquals(FOOBARBAZ, transformer.filterPatterns.get(0));
    }
}
